// 无法找到对象内部的属性和类型，不够专业，不能使用
let obj: object = {
    name: '张三',
    age: 18
}

// 正常情况下这种写法是完全可以的，但是如果该对象的属性比较多，如有几十个
// 那么这么去写就会显得代码非常的繁琐，可读性非常差
let obj1: {
    name: string;
    age: number;
} = {
    name: '张三',
    age: 18
}

// interface 用来给对象中的属性添加数据类型
interface iObj {
    name: string
    age: number,
    // 设置其类型为多种数据类型
    sex: string | boolean | number;
    // any 是任意类型
    abcd: any
    // ？ 可选属性，可以有也可以没有
    h?: number
}

const obj2: iObj = {
    name: '张三',
    age: 18,
    sex: 0,
    abcd: undefined,
    h: 180
}



console.log(obj2.name);


// 考虑如何给数组添加数据类型？
let list:iList[] = [1, 2, 3, 4, 5, 6, 'aaa', false, {}]

type iList= number | string | boolean | object;

// 泛型
// 装饰器